package com.turnengine.client.global.user.command.set;

import com.javabi.codebuilder.generated.IGeneratedCommandSet;
import com.javabi.common.locale.LanguageCountry;
import com.turnengine.client.global.game.enums.GameLevel;
import com.turnengine.client.global.user.bean.IUser;
import com.turnengine.client.global.user.enums.UserPermissionType;
import java.util.List;

/**
 * The I Global User Command Set.
 */
public interface IGlobalUserCommandSet extends IGeneratedCommandSet {

	Boolean signupUser(String name, String password, String email, int address, LanguageCountry language);

	Boolean verifyUser(int id, long code, int address);

	Boolean setUserAddress(int id, int address);

	long loginUser(String nameOrEmail, String password, int address);

	Boolean renameUser(long loginId, String from, String to);

	Boolean logoutUser(long loginId);

	Boolean setUserLanguage(long loginId, LanguageCountry language);

	IUser getUserById(long loginId, int id);

	IUser getUserByName(long loginId, String name);

	IUser getUserByEmail(long loginId, String email);

	IUser getUserByLoginId(long loginId, long id);

	int countUsers();

	Boolean adminVerifyUser(long loginId, int id);

	Boolean setUserPermission(long loginId, int id, UserPermissionType type);

	Boolean setUserGamePermission(long loginId, int userId, int id, UserPermissionType type, GameLevel level);

	Boolean setSignupVerification(long loginId, Boolean enabled);

	IUser getUser(long loginId);

	List<String> getUserNames(long loginId);
}
